//package codetemplate;
//
//import java.sql.Connection;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//import javax.annotation.Resource;
//
//import org.apache.commons.lang.StringUtils;
//import org.springframework.jdbc.core.JdbcTemplate;
//import org.springframework.jdbc.core.PreparedStatementCreator;
//import org.springframework.jdbc.core.RowMapper;
//import org.springframework.jdbc.support.GeneratedKeyHolder;
//import org.springframework.jdbc.support.KeyHolder;
//import org.springframework.stereotype.Repository;
//
//
//@Repository
//public class ModelobjectDaoImpl implements ModelobjectDao {
//
//    @Resource
//    private JdbcTemplate template;
//
//    @Override
//    public int saveModelobject( final Modelobject mo) {
//        final String sql = "INSERT INTO 表名  ( 字段1 , 字段2 ) " + " VALUES ( ?,  ?) ";
//        return getTemplate().update(sql, 字段1, 字段2);
//    }
//
//    @Override
//    public int saveModelobjectIncrease(Modelobject mo) {
//        KeyHolder generatedKeyHolder = new GeneratedKeyHolder();
//        int res = getTemplate().update(new PreparedStatementCreator() {
//            @Override
//            public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
//                final String sql = "INSERT INTO  表名   ( 字段1 , 字段2 ) VALUES ( ?,  ?) ";
//                PreparedStatement ps = con.prepareStatement(sql, new String[] { "id" });
//                ps.setString(1, 字段1);
//                ps.setString(2, 字段2);
//                return ps;
//            }
//        }, generatedKeyHolder);
//        if (res > 0) {
//            mo.setId(generatedKeyHolder.getKey().intValue());
//        }
//        return res;
//    }
//
//    @Override
//    public int modifyModelobject(Modelobject mo) {
//        String sql = "UPDATE 表名    SET 字段1 = ?, 字段2 = ? WHERE id = ? ";
//        return getTemplate().update(sql, 字段1, 字段2, id);
//    }
//
//    @Override
//    public int deleteModelobjectById(String id) {
//        return getTemplate().update("DELETE FROM 表名  WHERE id = ?", id);
//    }
//
//    @Override
//    public Modelobject findModelobjectById(String id) {
//        // TODO Auto-generated method stub
//        String sql = "SELECT * FROM 表名  WHERE id = ?";
//        List<Modelobject> l = getTemplate().query(sql, modelobjectMapper, id);
//        if (l.size() > 0) {
//            return l.get(0);
//        }
//        return null;
//    }
//
//    private final RowMapper<Modelobject> modelobjectMapper = new RowMapper<Modelobject>() {
//        @Override
//        public Modelobject mapRow(ResultSet rs, int arg1) throws SQLException {
//            Modelobject mo = new Modelobject();
//            mo.setId();
//            mo.setName();
//            return mo;
//        }
//    };
//
//    @Override
//    public Map<String, Object> findModelobjectMapById(String id) {
//        String sql = "SELECT * FROM 表名  WHERE id = ?";
//        List<Map<String, Object>> l = getTemplate().queryForList(sql, id);
//        if (l.size() > 0) {
//            return l.get(0);
//        }
//        return null;
//    }
//
//    @Override
//    public List<Modelobject> findModelobjectsByCond(Modelobject mo, int start, int pageSize) {
//        StringBuffer sql = new StringBuffer("SELECT * FROM 表名  ");
//        Object[] args = gernateModelobjectWhereCond(sql, mo, start, pageSize);
//        return getTemplate().query(sql.toString(), modelobjectMapper, args);
//    }
//
//    /**
//     * 生成查询where条件 (包括where && MySQL)
//     * 
//     * @param b
//     * @param mo
//     * @param start
//     * @param pageSize
//     * @param isCount	是否为计算count
//     * @return
//     */
//    private Object[] gernateModelobjectWhereCond(StringBuffer b, Modelobject mo, int start, int pageSize, boolean isCount ) {
//    	
//    	if (mo != null) {	//多对多情况下,需要left join 
//        	if(StringUtils.isNotBlank( mo.getS_searchkey()) ){
//        		int from_flag = b.indexOf(" from ");
//        		if(!isCount){	//如果不是计算count,则可能需要返回连接表的结果
//        			b.insert( from_flag, ", _rel.* ");
//        		}
//        		b.append(" left join xx _rel on _rel.id = table.id " );
//        	}
//        }        
//        List<Object> l = new ArrayList<Object>();
//        b.append(" WHERE 1=1 ");
//        if (mo != null) {
//            if ( StringUtils.isNotBlank(mo.getName())) {
//                b.append(" AND ").append(" 字段1 like ? ");
//                l.add(mo.getName());
//            }
//        }
//        if(!isCount){	//不是计算count,才可能需要排序和条数限制
//	        b.append(" ORDER BY ").append(" id DESC ");
//	        if (start < 0 || pageSize < 0) {
//	
//	        }
//	        else {
//	            b.append(" limit ?,?");
//	            l.add(start);
//	            l.add(pageSize);
//	        }
//        }
//        return l.toArray(new Object[l.size()]);
//    }
//
//    @Override
//    public List<Map<String, Object>> findModelobjectMapsByCond(Modelobject mo, int start, int pageSize) {
//        StringBuffer sql = new StringBuffer("SELECT * FROM 表名  ");
//        Object[] args = gernateModelobjectWhereCond(sql, mo, start, pageSize, false);
//        return getTemplate().queryForList(sql.toString(), args);
//    }
//
//    @Override
//    public int findModelobjectCountByCond(Modelobject mo) {
//        StringBuffer sql = new StringBuffer("SELECT count(1) FROM 表名  ");
//        Object[] args = gernateModelobjectWhereCond(sql, mo, -1, -1,true );
//        return getTemplate().queryForInt(sql.toString(), args);
//    }
//
//    @Override
//    public int checkExistWhenModifyModelobject(Modelobject mo) {
//        String sql = "select count(id) from 表名 where name= ? and id != ?";
//        return getTemplate().queryForInt(sql, mo.getName(), mo.getId() );
//    }
//
//    @Override
//    public int checkExistWhenSaveModelobject(Modelobject mo) {
//        String sql = "select count(id) from 表名 where name= ? ";
//        return getTemplate().queryForInt(sql, mo.getName() );
//    }
//
//    
//    
//    
//    public JdbcTemplate getTemplate() {
//        return template;
//    }
//
//    public void setTemplate(JdbcTemplate template) {
//        this.template = template;
//    }
//}
